{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "# Arnav Iyer | arnaviyer@my.unt.edu"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "filename1 = \"TestCases/CE/E-n76-k7.vrp\"\n",
    "filename2 = \"TestCases/CE/E-n30-k3.vrp\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "coordList = getCoordList2(filename1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "#my rss which improves times?\n",
    "\n",
    "import csv\n",
    "import math\n",
    "\n",
    "def getEuclidInfo(coordList):\n",
    "\n",
    "    amt = len(coordList)\n",
    "\n",
    "    adjList = [[-1 for i in range(amt)] for i in range(amt)]\n",
    "    popList = [-1 for i in range(amt)]\n",
    "\n",
    "    for i in range(amt):                      # coordList is N x 3 array with (x-coord,y-coord,demand)\n",
    "        popList[i] = coordList[i][2]\n",
    "        for j in range(amt):\n",
    "            adjList[i][j] = math.hypot(coordList[i][0]-coordList[j][0], coordList[i][1]-coordList[j][1])\n",
    "\n",
    "    return amt, adjList, popList\n",
    "\n",
    "def getCoordList(filename):\n",
    "    file = open(filename, \"r\") \n",
    "    info = file.readlines()\n",
    "    file.close()\n",
    "    amt = len(info)-1\n",
    "    coordList = [[-1 for i in range(3)] for i in range(amt)]\n",
    "    for i in range(amt):\n",
    "        r = info[i].split()\n",
    "        for j in range(3):\n",
    "            coordList[i][j] = float(r[j])\n",
    "    \n",
    "    truckCapacity = int(info[amt].split()[0])\n",
    "    costMax = int(info[amt].split()[1])\n",
    "\n",
    "    return coordList, truckCapacity, costMax\n",
    "\n",
    "\n",
    "def inputData():\n",
    "    filename = \"inputfile.csv\"\n",
    "    header = []\n",
    "    rows = []\n",
    "    amt = 0\n",
    "    \n",
    "    with open(filename, 'r') as csvfile:\n",
    "        fin = csv.reader(csvfile)\n",
    "        header = next(fin)\n",
    "        stillRSS = True\n",
    "        for row in fin:\n",
    "            if int(row[0]) == 1 and stillRSS:\n",
    "                stillRSS = False\n",
    "                amt = fin.line_num - 1\n",
    "            rows.append(row)\n",
    " \n",
    "    adjList = [[-1 for i in range(amt)] for i in range(amt)]\n",
    "    popList = [-1 for i in range(amt)]\n",
    "    count = -1\n",
    "    for row in rows:\n",
    "        count += 1\n",
    "        if count % 151 == 0 and count != 0:\n",
    "            popList[int(row[0])] = int(row[2])\n",
    "        if int(row[3]) == 152:     \n",
    "            adjList[int(row[0])][0] = float(row[5])\n",
    "        else:\n",
    "            adjList[int(row[0])][int(row[3])] = float(row[5])\n",
    "    \n",
    "    return amt, adjList, header, rows, popList\n",
    "\n",
    "def getPerms(nums):\n",
    "    if len(nums) == 1:\n",
    "        return [nums]\n",
    "\n",
    "    perms = []\n",
    "    for i in range(len(nums)):\n",
    "        othernums = nums[:i] + nums[i+1:]\n",
    "        otherperms = getPerms(othernums)\n",
    "        for perm in otherperms:\n",
    "            perms.append( [nums[i]]+ perm)\n",
    "    return perms\n",
    "\n",
    "def rankDist(adjList, amt):\n",
    "    distRank = []\n",
    "    for i in range(amt):\n",
    "        distRank.append([[adjList[i]][0],i])\n",
    "    distRank.sort()\n",
    "    return distRank\n",
    "\n",
    "class graph:\n",
    "    \n",
    "    # parameterized constructor\n",
    "    def __init__(self, amt, adjList, popList, truckCapacity = None, costMax=None, unloadingTime=None):\n",
    "        self.adjList = adjList # adjacency matrix\n",
    "        self.popList = popList # stores population of each POD\n",
    "        self.amt = amt # stores the amount of nodes\n",
    "        self.tourList = [] # stores tour sets\n",
    "        self.infoList = [] # stores population and cost of each tour in tourList\n",
    "        self.podVehicle = [] # stores maximum vehicle size per pod\n",
    "        self.truckCapacity = truckCapacity\n",
    "        self.costMax = costMax\n",
    "        self.unloadingTime = unloadingTime\n",
    "        self.distRank = rankDist(adjList, amt)\n",
    "\n",
    "        if not truckCapacity:\n",
    "            self.truckCapacity = 125\n",
    "\n",
    "        if not unloadingTime:\n",
    "            self.unloadingTime = 0\n",
    "\n",
    "        if not costMax: # maximum cost per tour, default value is 500\n",
    "            self.costMax = 10000\n",
    "\n",
    "    def checkPerms(self, nums):\n",
    "        best = []\n",
    "        bestTotal = math.inf\n",
    "        bestPop = 0\n",
    "        for perm in getPerms(nums):\n",
    "            cost = 0\n",
    "            pop = 0\n",
    "            for i in range(len(perm)-1):\n",
    "                cost+=self.adjList[int(perm[i])][int(perm[i+1])]\n",
    "                pop += self.popList[int(perm[i])]\n",
    "            pop += self.popList[int(perm[len(perm)-1])]\n",
    "            if (cost < bestTotal):\n",
    "                bestTotal = cost\n",
    "                best = perm\n",
    "                bestPop = pop\n",
    "        return best, bestTotal, bestPop\n",
    "\n",
    "    \n",
    "    # Gets the farthest two nodes given a set\n",
    "    def getFarthest(self,Xset = None):\n",
    "        if not Xset:\n",
    "            Xset = set([i for i in range(self.amt)])\n",
    "        maxdist = 0\n",
    "        maxi = 0\n",
    "        maxj = 0\n",
    "        for i in Xset:       # Iterates through adjacency matrix values from the set\n",
    "            for j in Xset:\n",
    "                if i==j:\n",
    "                    continue\n",
    "                if self.adjList[i][j] == float(-1):\n",
    "                    continue\n",
    "                if self.adjList[i][j] > maxdist:    # finds the max distance and saves the two nodes\n",
    "                    maxdist = self.adjList[i][j]\n",
    "                    maxi = i\n",
    "                    maxj = j\n",
    "        return maxi, maxj\n",
    "\n",
    "    def addRSS(self, tour=None):\n",
    "        if not tour:\n",
    "            for i in range(len(self.tourList)):\n",
    "                if (adjList[self.tourList[i][0]][0] >= adjList[self.tourList[i][-1]][0]):\n",
    "                    self.infoList[i][0] += self.adjList[0][self.tourList[i][-1]]\n",
    "                    self.tourList[i].append(0)\n",
    "                else:\n",
    "                    self.tourList[i].reverse()                                                 \n",
    "                    self.infoList[i][0] += self.adjList[0][self.tourList[i][-1]]\n",
    "                    self.tourList[i].append(0)\n",
    "        else:\n",
    "            return min(self.adjList[tour[0]][0] , self.adjList[tour[-1]][0])\n",
    "    \n",
    "    def checkCapacity(self):    #go through each route and check if the capacity of the route isn't over. add all the nodes to the \n",
    "        extraNodes = [] # stores nodes that are removed from routes bc of excess capacity\n",
    "        extraTotal = 0\n",
    "        extraPop = 0\n",
    "        for i in range(len(self.tourList)):\n",
    "            while (self.infoList[i][1] > self.truckCapacity):   # while the population of the tour is in excess, remove a node from the end closest to the RSS\n",
    "                extraNodes.append(self.tourList[i][-1])\n",
    "                self.infoList[i][1] -= self.popList[self.tourList[i][-1]]\n",
    "                self.infoList[i][0] -= self.unloadingTime\n",
    "                self.infoList[i][0] -= self.adjList[self.tourList[i][-1]][self.tourList[i][-2]]\n",
    "                del self.tourList[i][-1]\n",
    "        \n",
    "        #Can I route the extra notes in one route?\n",
    "        extraRoute = []\n",
    "        for pod in self.distRank:\n",
    "            if (extraNodes.count(pod[1]) == 1):\n",
    "                extraRoute.append(pod[1])\n",
    "                extraPop += self.popList[pod[1]]\n",
    "                if len(extraRoute) > 1:\n",
    "                    extraTotal += self.adjList[extraRoute[-1]][extraRoute[-2]]       \n",
    "                    extraTotal += self.unloadingTime\n",
    "        \n",
    "        \n",
    "\n",
    "        if (extraTotal > self.costMax or extraPop > self.truckCapacity):\n",
    "            self.makeTours(extraNodes,True)\n",
    "\n",
    "        elif (len(extraNodes)!=0):\n",
    "            self.tourList.append(extraNodes)\n",
    "            self.infoList.append([extraTotal,extraPop])\n",
    "\n",
    "        return\n",
    "\n",
    "    #given a set of nodes, it creates tours based on self.costMax and appends tours to self.toursList\n",
    "    def makeTours(self, nodesUV=None, withCapacity=None):\n",
    "\n",
    "        # if set isn't specified, creates a set of nodes\n",
    "        if not nodesUV:\n",
    "            nodesUV = set([i for i in range(1,self.amt)]) \n",
    "\n",
    "        if not withCapacity:\n",
    "            withCapacity = False\n",
    "\n",
    "        end1, end2 = self.getFarthest(nodesUV) # gets endpoints of the two tours\n",
    "        nodesUV.remove(end1)    # remove endpoints from unvisited nodes\n",
    "        nodesUV.remove(end2)\n",
    "\n",
    "        total1 = self.unloadingTime  #stores total cost for tour 1\n",
    "        total2 = self.unloadingTime  #stores total cost for tour 2\n",
    "        pop1 = self.popList[end1]\n",
    "        pop2 = self.popList[end2]\n",
    "        tour1 = [end1] \n",
    "        tour2 = [end2]\n",
    "\n",
    "        #Can I modify it so that it checks if placing the new node on top is better or if insterting it in second place is better? If inserting it in second place is better, keep moving back till it is not better. put it in the earliest place in which it is better\n",
    "\n",
    "        while len(nodesUV) != 0: # While there aren't any unvisited nodes\n",
    "            miin = math.inf\n",
    "            nextnode = 0\n",
    "            t1 = False  \n",
    "            t2 = False\n",
    "            if total1 >= total2:\t# which route is currently shorter?\n",
    "                t2 = True\n",
    "            else:\n",
    "                t1 = True\n",
    "            for node in nodesUV:    # loop through all unvisited nodes, find closest one to route with least length IF SAME LENGTH, CHOOSE ONE FURTHEST AWAY\n",
    "                if t1 and (self.adjList[node][tour1[-1]] > 0) and (miin > self.adjList[node][tour1[-1]]):\n",
    "                    nextnode = node\n",
    "                    miin = self.adjList[node][tour1[-1]]\n",
    "                if t2 and (self.adjList[node][tour2[-1]] > 0) and (miin > self.adjList[node][tour2[-1]]):\n",
    "                    nextnode = node\n",
    "                    miin = self.adjList[node][tour2[-1]]\n",
    "            if t1:\n",
    "                pop1 += self.popList[nextnode]\n",
    "                total1 += self.unloadingTime\n",
    "                if len(tour1) > 1 and total1 > total1 - self.adjList[tour1[-1]][tour1[-2]] + self.adjList[tour1[-2]][nextnode]:\n",
    "                    tour1.insert(len(tour1)-1,nextnode)\n",
    "                else:\n",
    "                    tour1.append(nextnode)\n",
    "                total1 += self.adjList[tour1[-1]][tour1[-2]]\n",
    "            # not updated\n",
    "            if t2:\n",
    "                pop2 += self.popList[nextnode]\n",
    "                total2 += self.unloadingTime\n",
    "                if len(tour2) > 1 and total2 > total2 - self.adjList[tour2[-1]][tour2[-2]] + self.adjList[tour2[-2]][nextnode]:\n",
    "                    tour2.insert(len(tour2)-1,nextnode)\n",
    "                else:\n",
    "                    tour2.append(nextnode)\n",
    "                total2 += self.adjList[tour2[-1]][tour2[-2]]\n",
    "            nodesUV.remove(nextnode)   # remove node just added from unvisited list\n",
    "\n",
    "        rsscost = self.addRSS(tour1)   # add the cost of traveling back to node 0, the RSS\n",
    "        total1 += rsscost\n",
    "        \n",
    "        if total1 <= self.costMax:          # if the cost of the tour is under the costMax, add the RSS back and add tour to self.tourList\n",
    "            total1 -= rsscost\n",
    "            self.tourList.append(tour1)\n",
    "            self.infoList.append([total1, pop1])\n",
    "        else:                               # if the cost of the tour is too much, divide the tour into two tours with the same algorithm\n",
    "            self.makeTours(tour1)\n",
    "\n",
    "        rsscost = self.addRSS(tour2)\n",
    "        total2 += rsscost\n",
    "\n",
    "        if total2 <= self.costMax:\n",
    "            total2 -= rsscost\n",
    "            self.tourList.append(tour2)\n",
    "            self.infoList.append([total2, pop2])\n",
    "        else:\n",
    "            self.makeTours(tour2)\n",
    "\n",
    "        self.checkCapacity()\n",
    "\n",
    "        return\n",
    "\n",
    "    def actualCost(self, nodes):\n",
    "        cost = 0\n",
    "        for i in range(1, len(nodes)):\n",
    "            cost += self.unloadingTime\n",
    "            #print(i)\n",
    "            cost += self.adjList[int(nodes[i])][int(nodes[i-1])]\n",
    "        return cost\n",
    "\n",
    "    def splitPods(self):\n",
    "        for node in range(1,self.amt):\n",
    "            while (self.popList[node] > self.truckCapacity):\n",
    "                self.popList[node] -= self.truckCapacity\n",
    "                self.tourList.append([node])\n",
    "                self.infoList.append([0,self.truckCapacity])\n",
    "            \n",
    "    def checkCap(self):\n",
    "        for node in range(1,self.amt):\n",
    "            if self.popList[node] > self.truckCapacity:\n",
    "                print(self.popList[node], self.truckCapacity)\n",
    "                return True\n",
    "        return False\n",
    "    \n",
    "coordList,truckCapacity, costMax  = getCoordList(filename1)\n",
    "amt, adjList, popList = getEuclidInfo(coordList)\n",
    "\n",
    "G = graph(amt, adjList, popList, truckCapacity, costMax)\n",
    "G.splitPods()\n",
    "G.makeTours()\n",
    "G.addRSS()\n",
    "\n",
    "# coordList, truckCapacity, costMax = getCoordList(filename2)\n",
    "# amt, adjList, popList = getEuclidInfo(coordList)\n",
    "\n",
    "# B = graph(amt, adjList, popList, truckCapacity, costMax)\n",
    "# B.splitPods()\n",
    "# B.makeTours()\n",
    "# B.addRSS()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "# This is the old and broken RSS, but works better on E-n76-k7\n",
    "\n",
    "import csv\n",
    "import math\n",
    "\n",
    "def getEuclidInfo(coordList):\n",
    "\n",
    "    amt = len(coordList)\n",
    "\n",
    "    adjList = [[-1 for i in range(amt)] for i in range(amt)]\n",
    "    popList = [-1 for i in range(amt)]\n",
    "\n",
    "    for i in range(amt):                      # coordList is N x 3 array with (x-coord,y-coord,demand)\n",
    "        popList[i] = coordList[i][2]\n",
    "        for j in range(amt):\n",
    "            adjList[i][j] = math.hypot(coordList[i][0]-coordList[j][0], coordList[i][1]-coordList[j][1])\n",
    "\n",
    "    return amt, adjList, popList\n",
    "\n",
    "def getCoordList(filename):\n",
    "    file = open(filename, \"r\") \n",
    "    info = file.readlines()\n",
    "    file.close()\n",
    "    amt = len(info)-1\n",
    "    coordList = [[-1 for i in range(3)] for i in range(amt)]\n",
    "    for i in range(amt):\n",
    "        r = info[i].split()\n",
    "        for j in range(3):\n",
    "            coordList[i][j] = float(r[j])\n",
    "    \n",
    "    truckCapacity = int(info[amt].split()[0])\n",
    "    costMax = int(info[amt].split()[1])\n",
    "\n",
    "    return coordList, truckCapacity, costMax\n",
    "\n",
    "\n",
    "def inputData():\n",
    "    filename = \"inputfile.csv\"\n",
    "    header = []\n",
    "    rows = []\n",
    "    amt = 0\n",
    "    \n",
    "    with open(filename, 'r') as csvfile:\n",
    "        fin = csv.reader(csvfile)\n",
    "        header = next(fin)\n",
    "        stillRSS = True\n",
    "        for row in fin:\n",
    "            if int(row[0]) == 1 and stillRSS:\n",
    "                stillRSS = False\n",
    "                amt = fin.line_num - 1\n",
    "            rows.append(row)\n",
    " \n",
    "    adjList = [[-1 for i in range(amt)] for i in range(amt)]\n",
    "    popList = [-1 for i in range(amt)]\n",
    "    count = -1\n",
    "    for row in rows:\n",
    "        count += 1\n",
    "        if count % 151 == 0 and count != 0:\n",
    "            popList[int(row[0])] = int(row[2])\n",
    "        if int(row[3]) == 152:     \n",
    "            adjList[int(row[0])][0] = float(row[5])\n",
    "        else:\n",
    "            adjList[int(row[0])][int(row[3])] = float(row[5])\n",
    "    \n",
    "    return amt, adjList, header, rows, popList\n",
    "\n",
    "def getPerms(nums):\n",
    "    if len(nums) == 1:\n",
    "        return [nums]\n",
    "\n",
    "    perms = []\n",
    "    for i in range(len(nums)):\n",
    "        othernums = nums[:i] + nums[i+1:]\n",
    "        otherperms = getPerms(othernums)\n",
    "        for perm in otherperms:\n",
    "            perms.append( [nums[i]]+ perm)\n",
    "    return perms\n",
    "\n",
    "def rankDist(adjList, amt):\n",
    "    distRank = []\n",
    "    for i in range(amt):\n",
    "        distRank.append([[adjList[i]][0],i])\n",
    "    distRank.sort()\n",
    "    return distRank\n",
    "\n",
    "class graph:\n",
    "    \n",
    "    # parameterized constructor\n",
    "    def __init__(self, amt, adjList, popList, truckCapacity = None, costMax=None, unloadingTime=None):\n",
    "        self.adjList = adjList # adjacency matrix\n",
    "        self.popList = popList # stores population of each POD\n",
    "        self.amt = amt # stores the amount of nodes\n",
    "        self.tourList = [] # stores tour sets\n",
    "        self.infoList = [] # stores population and cost of each tour in tourList\n",
    "        self.podVehicle = [] # stores maximum vehicle size per pod\n",
    "        self.truckCapacity = truckCapacity\n",
    "        self.costMax = costMax\n",
    "        self.unloadingTime = unloadingTime\n",
    "        self.distRank = rankDist(adjList, amt)\n",
    "\n",
    "        if not truckCapacity:\n",
    "            self.truckCapacity = 125\n",
    "\n",
    "        if not unloadingTime:\n",
    "            self.unloadingTime = 0\n",
    "\n",
    "        if not costMax: # maximum cost per tour, default value is 500\n",
    "            self.costMax = 10000\n",
    "\n",
    "    def checkPerms(self, nums):\n",
    "        best = []\n",
    "        bestTotal = math.inf\n",
    "        bestPop = 0\n",
    "        for perm in getPerms(nums):\n",
    "            cost = 0\n",
    "            pop = 0\n",
    "            for i in range(len(perm)-1):\n",
    "                cost+=self.adjList[int(perm[i])][int(perm[i+1])]\n",
    "                pop += self.popList[int(perm[i])]\n",
    "            pop += self.popList[int(perm[len(perm)-1])]\n",
    "            if (cost < bestTotal):\n",
    "                bestTotal = cost\n",
    "                best = perm\n",
    "                bestPop = pop\n",
    "        return best, bestTotal, bestPop\n",
    "\n",
    "    \n",
    "    # Gets the farthest two nodes given a set\n",
    "    def getFarthest(self,Xset = None):\n",
    "        if not Xset:\n",
    "            Xset = set([i for i in range(self.amt)])\n",
    "        maxdist = 0\n",
    "        maxi = 0\n",
    "        maxj = 0\n",
    "        for i in Xset:       # Iterates through adjacency matrix values from the set\n",
    "            for j in Xset:\n",
    "                if i==j:\n",
    "                    continue\n",
    "                if self.adjList[i][j] == float(-1):\n",
    "                    continue\n",
    "                if self.adjList[i][j] > maxdist:    # finds the max distance and saves the two nodes\n",
    "                    maxdist = self.adjList[i][j]\n",
    "                    maxi = i\n",
    "                    maxj = j\n",
    "        return maxi, maxj\n",
    "\n",
    "    def addRSS(self, tour=None):\n",
    "        if not tour:\n",
    "            for i in range(len(self.tourList)):\n",
    "                if (adjList[self.tourList[i][0]][0] >= adjList[self.tourList[i][-1]][0]):\n",
    "                    self.infoList[i][0] += self.adjList[0][self.tourList[i][-1]]\n",
    "                    self.tourList[i].append(0)\n",
    "                else:\n",
    "                    self.tourList[i].reverse()                                                 \n",
    "                    self.infoList[i][0] += self.adjList[0][self.tourList[i][-1]]\n",
    "                    self.tourList[i].append(0)\n",
    "        else:\n",
    "            return min(self.adjList[tour[0]][0] , self.adjList[tour[-1]][0])\n",
    "    \n",
    "    def checkCapacity(self):    #go through each route and check if the capacity of the route isn't over. add all the nodes to the \n",
    "        extraNodes = [] # stores nodes that are removed from routes bc of excess capacity\n",
    "        extraTotal = 0\n",
    "        extraPop = 0\n",
    "        for i in range(len(self.tourList)):\n",
    "            while (self.infoList[i][1] > self.truckCapacity):   # while the population of the tour is in excess, remove a node from the end closest to the RSS\n",
    "                extraNodes.append(self.tourList[i][-1])\n",
    "                self.infoList[i][1] -= self.popList[self.tourList[i][-1]]\n",
    "                self.infoList[i][0] -= self.unloadingTime\n",
    "                self.infoList[i][0] -= self.adjList[self.tourList[i][-1]][self.tourList[i][-2]]\n",
    "                del self.tourList[i][-1]\n",
    "        \n",
    "        #Can I route the extra notes in one route?\n",
    "        extraRoute = []\n",
    "        for pod in self.distRank:\n",
    "            if (extraNodes.count(pod[1]) == 1):\n",
    "                extraRoute.append(pod[1])\n",
    "                extraPop += self.popList[pod[1]]\n",
    "                if len(extraRoute) > 1:\n",
    "                    extraTotal += self.adjList[extraRoute[-1]][extraRoute[-2]]       \n",
    "                    extraTotal += self.unloadingTime\n",
    "        \n",
    "        \n",
    "\n",
    "        if (extraTotal > self.costMax or extraPop > self.truckCapacity):\n",
    "            self.makeTours(extraNodes,True)\n",
    "\n",
    "        elif (len(extraNodes)!=0):\n",
    "            self.tourList.append(extraNodes)\n",
    "            self.infoList.append([extraTotal,extraPop])\n",
    "\n",
    "        return\n",
    "\n",
    "    #given a set of nodes, it creates tours based on self.costMax and appends tours to self.toursList\n",
    "    def makeTours(self, nodesUV=None, withCapacity=None):\n",
    "\n",
    "        # if set isn't specified, creates a set of nodes\n",
    "        if not nodesUV:\n",
    "            nodesUV = set([i for i in range(1,self.amt)]) \n",
    "\n",
    "        if not withCapacity:\n",
    "            withCapacity = False\n",
    "\n",
    "        end1, end2 = self.getFarthest(nodesUV) # gets endpoints of the two tours\n",
    "        nodesUV.remove(end1)    # remove endpoints from unvisited nodes\n",
    "        nodesUV.remove(end2)\n",
    "\n",
    "        total1 = self.unloadingTime  #stores total cost for tour 1\n",
    "        total2 = self.unloadingTime  #stores total cost for tour 2\n",
    "        pop1 = self.popList[end1]\n",
    "        pop2 = self.popList[end2]\n",
    "        tour1 = [end1] \n",
    "        tour2 = [end2]\n",
    "\n",
    "        #Can I modify it so that it checks if placing the new node on top is better or if insterting it in second place is better? If inserting it in second place is better, keep moving back till it is not better. put it in the earliest place in which it is better\n",
    "\n",
    "        while len(nodesUV) != 0: # While there aren't any unvisited nodes\n",
    "            miin = math.inf\n",
    "            nextnode = 0\n",
    "            t1 = False  \n",
    "            t2 = False\n",
    "            if total1 >= total2:\t# which route is currently shorter?\n",
    "                t2 = True\n",
    "            else:\n",
    "                t1 = True\n",
    "            for node in nodesUV:    # loop through all unvisited nodes, find closest one to route with least length IF SAME LENGTH, CHOOSE ONE FURTHEST AWAY\n",
    "                if t1 and (self.adjList[node][end1] > 0) and (miin > self.adjList[node][end1]):\n",
    "                    nextnode = node\n",
    "                    miin = self.adjList[node][end1]\n",
    "                if t2 and (self.adjList[node][end2] > 0) and (miin > self.adjList[node][end2]):\n",
    "                    nextnode = node\n",
    "                    miin = self.adjList[node][end2]\n",
    "            if t1:\n",
    "                pop1 += self.popList[nextnode]\n",
    "                tour1.append(nextnode)\n",
    "                end1 = nextnode\n",
    "                total1 += miin\n",
    "                total1 += self.unloadingTime\n",
    "            if t2:\n",
    "                pop2 += self.popList[nextnode]\n",
    "                tour2.append(nextnode)\n",
    "                end2 = nextnode\n",
    "                total2 += miin\n",
    "                total2 += self.unloadingTime\n",
    "            nodesUV.remove(nextnode)   # remove node just added from unvisited list\n",
    "\n",
    "        rsscost = self.addRSS(tour1)   # add the cost of traveling back to node 0, the RSS\n",
    "        total1 += rsscost\n",
    "        \n",
    "        if total1 <= self.costMax:          # if the cost of the tour is under the costMax, add the RSS back and add tour to self.tourList\n",
    "            total1 -= rsscost\n",
    "            self.tourList.append(tour1)\n",
    "            self.infoList.append([total1, pop1])\n",
    "        else:                               # if the cost of the tour is too much, divide the tour into two tours with the same algorithm\n",
    "            self.makeTours(tour1)\n",
    "\n",
    "        rsscost = self.addRSS(tour2)\n",
    "        total2 += rsscost\n",
    "\n",
    "        if total2 <= self.costMax:\n",
    "            total2 -= rsscost\n",
    "            self.tourList.append(tour2)\n",
    "            self.infoList.append([total2, pop2])\n",
    "        else:\n",
    "            self.makeTours(tour2)\n",
    "\n",
    "        self.checkCapacity()\n",
    "\n",
    "        return\n",
    "\n",
    "    def actualCost(self, nodes):\n",
    "        cost = 0\n",
    "        for i in range(1, len(nodes)):\n",
    "            cost += self.unloadingTime\n",
    "            #print(i)\n",
    "            cost += self.adjList[int(nodes[i])][int(nodes[i-1])]\n",
    "        return cost\n",
    "\n",
    "    def splitPods(self):\n",
    "        for node in range(1,self.amt):\n",
    "            while (self.popList[node] > self.truckCapacity):\n",
    "                self.popList[node] -= self.truckCapacity\n",
    "                self.tourList.append([node])\n",
    "                self.infoList.append([0,self.truckCapacity])\n",
    "            \n",
    "    def checkCap(self):\n",
    "        for node in range(1,self.amt):\n",
    "            if self.popList[node] > self.truckCapacity:\n",
    "                print(self.popList[node], self.truckCapacity)\n",
    "                return True\n",
    "        return False\n",
    "\n",
    "\n",
    "# coordList,truckCapacity, costMax  = getCoordList(filename1)\n",
    "# amt, adjList, popList = getEuclidInfo(coordList)\n",
    "\n",
    "# G = graph(amt, adjList, popList, truckCapacity, costMax)\n",
    "# G.splitPods()\n",
    "# G.makeTours()\n",
    "# G.addRSS()\n",
    "\n",
    "coordList, truckCapacity, costMax = getCoordList(filename2)\n",
    "amt, adjList, popList = getEuclidInfo(coordList)\n",
    "\n",
    "B = graph(amt, adjList, popList, truckCapacity, costMax)\n",
    "B.splitPods()\n",
    "B.makeTours()\n",
    "B.addRSS()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Arnav Iyer | arnaviyer@my.unt.edu\n",
    "# This is the fixed rss which adds nodes to either end of the route instead of just one\n",
    "\n",
    "import csv\n",
    "import math\n",
    "\n",
    "def getEuclidInfo(coordList):\n",
    "\n",
    "    amt = len(coordList)\n",
    "\n",
    "    adjList = [[-1 for i in range(amt)] for i in range(amt)]\n",
    "    popList = [-1 for i in range(amt)]\n",
    "\n",
    "    for i in range(amt):                      # coordList is N x 3 array with (x-coord,y-coord,demand)\n",
    "        popList[i] = coordList[i][2]\n",
    "        for j in range(amt):\n",
    "            adjList[i][j] = math.hypot(coordList[i][0]-coordList[j][0], coordList[i][1]-coordList[j][1])\n",
    "\n",
    "    return amt, adjList, popList\n",
    "\n",
    "def getCoordList(filename):\n",
    "    file = open(filename, \"r\") \n",
    "    info = file.readlines()\n",
    "    file.close()\n",
    "    amt = len(info)-1\n",
    "    coordList = [[-1 for i in range(3)] for i in range(amt)]\n",
    "    for i in range(amt):\n",
    "        r = info[i].split()\n",
    "        for j in range(3):\n",
    "            coordList[i][j] = float(r[j])\n",
    "    \n",
    "    truckCapacity = int(info[amt].split()[0])\n",
    "    costMax = int(info[amt].split()[1])\n",
    "\n",
    "    return coordList, truckCapacity, costMax\n",
    "\n",
    "\n",
    "def inputData():\n",
    "    filename = \"inputfile.csv\"\n",
    "    header = []\n",
    "    rows = []\n",
    "    amt = 0\n",
    "    \n",
    "    with open(filename, 'r') as csvfile:\n",
    "        fin = csv.reader(csvfile)\n",
    "        header = next(fin)\n",
    "        stillRSS = True\n",
    "        for row in fin:\n",
    "            if int(row[0]) == 1 and stillRSS:\n",
    "                stillRSS = False\n",
    "                amt = fin.line_num - 1\n",
    "            rows.append(row)\n",
    " \n",
    "    adjList = [[-1 for i in range(amt)] for i in range(amt)]\n",
    "    popList = [-1 for i in range(amt)]\n",
    "    count = -1\n",
    "    for row in rows:\n",
    "        count += 1\n",
    "        if count % 151 == 0 and count != 0:\n",
    "            popList[int(row[0])] = int(row[2])\n",
    "        if int(row[3]) == 152:     \n",
    "            adjList[int(row[0])][0] = float(row[5])\n",
    "        else:\n",
    "            adjList[int(row[0])][int(row[3])] = float(row[5])\n",
    "    \n",
    "    return amt, adjList, header, rows, popList\n",
    "\n",
    "def getPerms(nums):\n",
    "    if len(nums) == 1:\n",
    "        return [nums]\n",
    "\n",
    "    perms = []\n",
    "    for i in range(len(nums)):\n",
    "        othernums = nums[:i] + nums[i+1:]\n",
    "        otherperms = getPerms(othernums)\n",
    "        for perm in otherperms:\n",
    "            perms.append( [nums[i]]+ perm)\n",
    "    return perms\n",
    "\n",
    "def rankDist(adjList, amt):\n",
    "    distRank = []\n",
    "    for i in range(amt):\n",
    "        distRank.append([[adjList[i]][0],i])\n",
    "    distRank.sort()\n",
    "    return distRank\n",
    "\n",
    "class graph:\n",
    "    \n",
    "    # parameterized constructor\n",
    "    def __init__(self, amt, adjList, popList, truckCapacity = None, costMax=None, unloadingTime=None):\n",
    "        self.adjList = adjList # adjacency matrix\n",
    "        self.popList = popList # stores population of each POD\n",
    "        self.amt = amt # stores the amount of nodes\n",
    "        self.tourList = [] # stores tour sets\n",
    "        self.infoList = [] # stores population and cost of each tour in tourList\n",
    "        self.podVehicle = [] # stores maximum vehicle size per pod\n",
    "        self.truckCapacity = truckCapacity\n",
    "        self.costMax = costMax\n",
    "        self.unloadingTime = unloadingTime\n",
    "        self.distRank = rankDist(adjList, amt)\n",
    "\n",
    "        if not truckCapacity:\n",
    "            self.truckCapacity = 125\n",
    "\n",
    "        if not unloadingTime:\n",
    "            self.unloadingTime = 0\n",
    "\n",
    "        if not costMax: # maximum cost per tour, default value is 500\n",
    "            self.costMax = 10000\n",
    "\n",
    "    def checkPerms(self, nums):\n",
    "        best = []\n",
    "        bestTotal = math.inf\n",
    "        bestPop = 0\n",
    "        for perm in getPerms(nums):\n",
    "            cost = 0\n",
    "            pop = 0\n",
    "            for i in range(len(perm)-1):\n",
    "                cost+=self.adjList[int(perm[i])][int(perm[i+1])]\n",
    "                pop += self.popList[int(perm[i])]\n",
    "            pop += self.popList[int(perm[len(perm)-1])]\n",
    "            if (cost < bestTotal):\n",
    "                bestTotal = cost\n",
    "                best = perm\n",
    "                bestPop = pop\n",
    "        return best, bestTotal, bestPop\n",
    "\n",
    "    \n",
    "    # Gets the farthest two nodes given a set\n",
    "    def getFarthest(self,Xset = None):\n",
    "        if not Xset:\n",
    "            Xset = set([i for i in range(self.amt)])\n",
    "        maxdist = 0\n",
    "        maxi = 0\n",
    "        maxj = 0\n",
    "        for i in Xset:       # Iterates through adjacency matrix values from the set\n",
    "            for j in Xset:\n",
    "                if i==j:\n",
    "                    continue\n",
    "                if self.adjList[i][j] == float(-1):\n",
    "                    continue\n",
    "                if self.adjList[i][j] > maxdist:    # finds the max distance and saves the two nodes\n",
    "                    maxdist = self.adjList[i][j]\n",
    "                    maxi = i\n",
    "                    maxj = j\n",
    "        return maxi, maxj\n",
    "\n",
    "    def addRSS(self, tour=None):\n",
    "        if not tour:\n",
    "            for i in range(len(self.tourList)):\n",
    "                if (adjList[self.tourList[i][0]][0] >= adjList[self.tourList[i][-1]][0]):\n",
    "                    self.infoList[i][0] += self.adjList[0][self.tourList[i][-1]]\n",
    "                    self.tourList[i].append(0)\n",
    "                else:\n",
    "                    self.tourList[i].reverse()                                                 \n",
    "                    self.infoList[i][0] += self.adjList[0][self.tourList[i][-1]]\n",
    "                    self.tourList[i].append(0)\n",
    "        else:\n",
    "            return min(self.adjList[tour[0]][0] , self.adjList[tour[-1]][0])\n",
    "    \n",
    "    def checkCapacity(self):    #go through each route and check if the capacity of the route isn't over. add all the nodes to the \n",
    "        extraNodes = [] # stores nodes that are removed from routes bc of excess capacity\n",
    "        extraTotal = 0\n",
    "        extraPop = 0\n",
    "        for i in range(len(self.tourList)):\n",
    "            while (self.infoList[i][1] > self.truckCapacity):   # while the population of the tour is in excess, remove a node from the end closest to the RSS\n",
    "                extraNodes.append(self.tourList[i][-1])\n",
    "                self.infoList[i][1] -= self.popList[self.tourList[i][-1]]\n",
    "                self.infoList[i][0] -= self.unloadingTime\n",
    "                self.infoList[i][0] -= self.adjList[self.tourList[i][-1]][self.tourList[i][-2]]\n",
    "                del self.tourList[i][-1]\n",
    "        \n",
    "        #Can I route the extra notes in one route?\n",
    "        extraRoute = []\n",
    "        for pod in self.distRank:\n",
    "            if (extraNodes.count(pod[1]) == 1):\n",
    "                extraRoute.append(pod[1])\n",
    "                extraPop += self.popList[pod[1]]\n",
    "                if len(extraRoute) > 1:\n",
    "                    extraTotal += self.adjList[extraRoute[-1]][extraRoute[-2]]       \n",
    "                    extraTotal += self.unloadingTime\n",
    "        \n",
    "        \n",
    "\n",
    "        if (extraTotal > self.costMax or extraPop > self.truckCapacity):\n",
    "            self.makeTours(extraNodes,True)\n",
    "\n",
    "        elif (len(extraNodes)!=0):\n",
    "            self.tourList.append(extraNodes)\n",
    "            self.infoList.append([extraTotal,extraPop])\n",
    "\n",
    "        return\n",
    "\n",
    "    #given a set of nodes, it creates tours based on self.costMax and appends tours to self.toursList\n",
    "    def makeTours(self, nodesUV=None, withCapacity=None):\n",
    "\n",
    "        # if set isn't specified, creates a set of nodes\n",
    "        if not nodesUV:\n",
    "            nodesUV = set([i for i in range(1,self.amt)]) \n",
    "\n",
    "        if not withCapacity:\n",
    "            withCapacity = False\n",
    "\n",
    "        end1, end2 = self.getFarthest(nodesUV) # gets endpoints of the two tours\n",
    "        nodesUV.remove(end1)    # remove endpoints from unvisited nodes\n",
    "        nodesUV.remove(end2)\n",
    "\n",
    "        total1 = self.unloadingTime  #stores total cost for tour 1\n",
    "        total2 = self.unloadingTime  #stores total cost for tour 2\n",
    "        pop1 = self.popList[end1]\n",
    "        pop2 = self.popList[end2]\n",
    "        tour1 = [end1] \n",
    "        tour2 = [end2]\n",
    "        end = True\n",
    "\n",
    "        while len(nodesUV) != 0: # While there aren't any unvisited nodes\n",
    "            miin = math.inf\n",
    "            nextnode = 0\n",
    "            t1 = False  \n",
    "            t2 = False\n",
    "            if total1 >= total2:\t# which route is currently shorter?\n",
    "                t2 = True\n",
    "            else:\n",
    "                t1 = True\n",
    "            for node in nodesUV:    # loop through all unvisited nodes, find closest one to route with least length IF SAME LENGTH, CHOOSE ONE FURTHEST AWAY\n",
    "                if t1 and (self.adjList[node][tour1[-1]] > 0) and (self.adjList[node][tour1[0]]) and ((miin > self.adjList[node][tour1[-1]]) or (miin > self.adjList[node][tour1[0]])):\n",
    "                    nextnode = node\n",
    "                    miin = min(self.adjList[node][tour1[-1]], self.adjList[node][tour1[0]])\n",
    "                    if (miin == self.adjList[node][tour1[-1]]):\n",
    "                        end = True\n",
    "                    else:\n",
    "                        end = False\n",
    "                if t2 and (self.adjList[node][tour2[-1]] > 0) and (self.adjList[node][tour2[0]]) and ((miin > self.adjList[node][tour2[-1]]) or (miin > self.adjList[node][tour2[0]])):\n",
    "                    nextnode = node\n",
    "                    miin = min(self.adjList[node][tour2[-1]], self.adjList[node][tour2[0]])\n",
    "                    if (miin == self.adjList[node][tour2[-1]]):\n",
    "                        end = True\n",
    "                    else:\n",
    "                        end = False\n",
    "            if t1:\n",
    "                pop1 += self.popList[nextnode]\n",
    "                if end:\n",
    "                    tour1.append(nextnode) # add the node to the correct tour\n",
    "                else:\n",
    "                    tour1.insert(0,nextnode)\n",
    "                total1 += miin         # update the total cost of tour\n",
    "                total1 += self.unloadingTime\n",
    "            if t2:\n",
    "                pop2 += self.popList[nextnode]\n",
    "                if end:\n",
    "                    tour2.append(nextnode) # add the node to the correct tour\n",
    "                else:\n",
    "                    tour2.insert(0,nextnode)\n",
    "                total2 += miin\n",
    "                total2 += self.unloadingTime\n",
    "            nodesUV.remove(nextnode)   # remove node just added from unvisited list\n",
    "\n",
    "        rsscost = self.addRSS(tour1)   # add the cost of traveling back to node 0, the RSS\n",
    "        total1 += rsscost\n",
    "        \n",
    "        xlist = []\n",
    "        ylist = []\n",
    "        for route in self.tourList:\n",
    "            x = []\n",
    "            y = []\n",
    "            for node in route:\n",
    "                x.append(coordList[node][0])\n",
    "                y.append(coordList[node][1])\n",
    "            xlist.append(x)\n",
    "            ylist.append(y)\n",
    "        RSSx = [coordList[0][0]]\n",
    "        RSSy = [coordList[0][1]]\n",
    "        for i in range(len(xlist)):\n",
    "            plt.plot(xlist[i], ylist[i], marker='o', linestyle='--')\n",
    "        plt.plot(RSSx,RSSy, marker = 'o', linestyle = 'None', color = 'k')\n",
    "        plt.title(filename2)\n",
    "        plt.show()\n",
    "        time.sleep(3)\n",
    "        \n",
    "        if total1 <= self.costMax:          # if the cost of the tour is under the costMax, add the RSS back and add tour to self.tourList\n",
    "            total1 -= rsscost\n",
    "            self.tourList.append(tour1)\n",
    "            self.infoList.append([total1, pop1])\n",
    "        else:                               # if the cost of the tour is too much, divide the tour into two tours with the same algorithm\n",
    "            self.makeTours(tour1)\n",
    "\n",
    "        rsscost = self.addRSS(tour2)\n",
    "        total2 += rsscost\n",
    "\n",
    "        if total2 <= self.costMax:\n",
    "            total2 -= rsscost\n",
    "            self.tourList.append(tour2)\n",
    "            self.infoList.append([total2, pop2])\n",
    "        else:\n",
    "            self.makeTours(tour2)\n",
    "\n",
    "        self.checkCapacity()\n",
    "\n",
    "        return\n",
    "\n",
    "    def actualCost(self, nodes):\n",
    "        cost = 0\n",
    "        for i in range(1, len(nodes)):\n",
    "            cost += self.unloadingTime\n",
    "            #print(i)\n",
    "            cost += self.adjList[int(nodes[i])][int(nodes[i-1])]\n",
    "        return cost\n",
    "\n",
    "    def splitPods(self):\n",
    "        for node in range(1,self.amt):\n",
    "            while (self.popList[node] > self.truckCapacity):\n",
    "                self.popList[node] -= self.truckCapacity\n",
    "                self.tourList.append([node])\n",
    "                self.infoList.append([0,self.truckCapacity])\n",
    "            \n",
    "    def checkCap(self):\n",
    "        for node in range(1,self.amt):\n",
    "            if self.popList[node] > self.truckCapacity:\n",
    "                print(self.popList[node], self.truckCapacity)\n",
    "                return True\n",
    "        return False\n",
    "\n",
    "coordList,truckCapacity, costMax  = getCoordList(filename1)\n",
    "amt, adjList, popList = getEuclidInfo(coordList)\n",
    "\n",
    "G = graph(amt, adjList, popList, truckCapacity, costMax)\n",
    "G.splitPods()\n",
    "G.makeTours()\n",
    "G.addRSS()\n",
    "\n",
    "coordList, truckCapacity, costMax = getCoordList(filename2)\n",
    "amt, adjList, popList = getEuclidInfo(coordList)\n",
    "\n",
    "B = graph(amt, adjList, popList, truckCapacity, costMax)\n",
    "B.splitPods()\n",
    "B.makeTours()\n",
    "B.addRSS()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "def getCoordList2(filename):\n",
    "    file = open(filename, \"r\")\n",
    "    info = file.readlines()\n",
    "    file.close()\n",
    "    amt = len(info)-1\n",
    "    coordList = [[-1 for i in range(3)] for i in range(amt)]\n",
    "    for i in range(amt):\n",
    "        for j in range(3):\n",
    "            coordList[i][j] = float(info[i].split()[j])\n",
    "    return coordList"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "coordList = getCoordList2(filename2)\n",
    "xlist = []\n",
    "ylist = []\n",
    "for route in B.tourList:\n",
    "    x = []\n",
    "    y = []\n",
    "    for node in route:\n",
    "        x.append(coordList[node][0])\n",
    "        y.append(coordList[node][1])\n",
    "    xlist.append(x)\n",
    "    ylist.append(y)\n",
    "RSSx = [coordList[0][0]]\n",
    "RSSy = [coordList[0][1]]\n",
    "for i in range(len(xlist)):\n",
    "    plt.plot(xlist[i], ylist[i], marker='o', linestyle='--')\n",
    "plt.plot(RSSx,RSSy, marker = 'o', linestyle = 'None', color = 'k')\n",
    "plt.title(filename2)\n",
    "plt.show()\n",
    "time.sleep(3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "coordList = getCoordList2(filename1)\n",
    "xlist = []\n",
    "ylist = []\n",
    "for route in G.tourList:\n",
    "    x = []\n",
    "    y = []\n",
    "    for node in route:\n",
    "        x.append(coordList[node][0])\n",
    "        y.append(coordList[node][1])\n",
    "    xlist.append(x)\n",
    "    ylist.append(y)\n",
    "RSSx = [coordList[0][0]]\n",
    "RSSy = [coordList[0][1]]\n",
    "for i in range(len(xlist)):\n",
    "    plt.plot(xlist[i], ylist[i], marker='o', linestyle='--')\n",
    "plt.plot(RSSx,RSSy, marker = 'o', linestyle = 'None', color = 'k')\n",
    "plt.title(filename1)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "coordList = getCoordList2(filename2)\n",
    "xlist = []\n",
    "ylist = []\n",
    "for route in B.tourList:\n",
    "    x = []\n",
    "    y = []\n",
    "    for node in route:\n",
    "        x.append(coordList[node][0])\n",
    "        y.append(coordList[node][1])\n",
    "    xlist.append(x)\n",
    "    ylist.append(y)\n",
    "RSSx = [coordList[0][0]]\n",
    "RSSy = [coordList[0][1]]\n",
    "for i in range(len(xlist)):\n",
    "    plt.plot(xlist[i], ylist[i], marker='o', linestyle='--')\n",
    "plt.plot(RSSx,RSSy, marker = 'o', linestyle = 'None', color = 'k')\n",
    "plt.title('Good RSS performance')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
